\section{LexBFS}

Para implementar LexBFS, se usa la estructura ListaRefinada. Esta lista modela 
una lista de particiones de v'ertices, donde cada partici'on es una lista de v'ertices, 
a diferencia del paper donde las particiones son m'as abstractas (marcan puntos de 
comienzo y fin en una lista 'unica de v'ertices). La ventaja de esta forma de 
 implementaci'on es que las operaciones a realizar son m'as intuitivas, los v'ertices 
 se traspasan realmente de una partici'on a otra y no hay que lidiar con definiciones 
 de extremos. ListaRefinada tambi'en cuenta con  un arreglo que indica para cada 
 v'ertice la partici'on a la que pertenece y su posici'on dentro de 'esta (en realidad 
 son punteros a al nodo de lista que contiene la particion, y el nodo de lista que 
 contiene al v'ertice, respectivamente). En el arreglo tambi'en hay flags que 
 indican si el v'ertice ya fue elegido como pivot. Con estos datos se puede manipular la 
 estructura para implementar el algoritmo de refinamiento.
 
 
 Fue necesario implementar una nueva lista doblemente enlazada ya que las 
 operaciones requer'ian un manejo de m'as bajo nivel de la estructura 
 (como ser sacar un nodo de una lista y agregarlo en otra).
 
 
 Cada partici'on tiene un flag booleano que indica si ya fue fragmentada en el proceso 
 de refinamiento, si un v'ertice debe salir de esa partici'on y 'esta no 
 fue fragmentada a'un, se crea una partici'on nueva (al lado de la anterior), 
 y luego se mueve el v'ertice, en caso contrario el v'ertice se mueve a la 
 nueva partici'on que ya fue creada. Si una partici'on queda vac'ia, se la 
 elimina al instante. Puesto que se har'a el refinamiento varias veces, 
 estos flags deben resetearse al terminar el proceso, esto se hace 
 guardando en una lista qu'e particiones fueron fragmentadas y 
 luego recorri'endola y seteando en \textit{false} los flags, de esta 
 manera se mantiene el orden de complejidad. 
 
 
 LexBFS es un m'etodo de la clase Grafo y usa internamente una ListaRefinada. Inicialmente 
 ListaRefinada representa una lista con una s'ola partici'on con todos los v'ertices. 
 Se van tomando los v'ertices de la partici'on m'as a la izquierda 
 (de v'ertices no visitados) y se refina en base a sus vecindades. Dependiendo si 
 se corre LexBFS o Co\_LexBFS, la 'unica diferencia es que en la 
 refinaci'on, las nuevas particiones se colocan a derecha o izquierda de 
 las viejas, respectivamente. 
  
  